💯 solving-algo | April 05, 2021
1x2, 2x1, 2x2
로 이루어진 덮개를 이용해서 바닥을 채우는 모든 경우의 수를 구하라.
n = int(input())
result = 0
dp = [0] * 1001
dp[1] = 1
dp[2] = 2
for i in range(3, n + 1):
dp[i] = (dp[i - 1] * 2 + dp[i - 2]) % 796796
print(dp[n])
이 문제도 점화식만 잘 세우면 해결됩니다. 세로의 길이는 고정되어 있으므로, 가로의 길이만 고려하면 됩니다.